# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/8/25 0025 22:58
@Author : 测试开发工程师
@File : 10. ORM 介绍.py
@Software: PyCharm
============================
"""

"""
传统的方式：添加到数据库中
    一个接口 user.add() -> 添加一个用户到数据库中
    1. 连接数据库
    2. 创建游标
    3. 写 sql 语句（增删改查）
    4. 关闭连接

  

什么是持久化
    持久化（Persistence）即把数据保存到可永久保存的存储设备中（如磁盘）。持久化的主要应用是将内存中的数据存储在关系型的数据库中。
    当然也可以存储在磁盘文件中，XML 数据文件中等

什么是 ORM
    Object Relational Mapping 对象关系映射
    作用是在关系型数据库 和 对象 之间做一个映射，这样在具体操作数据库的时候，就不要再去和复杂的 SQL 语句打交道，只要像平时操作对象一样
    操作就可以了。
    
ORM 与 SQL 的对比： ORM 存在大量反射。会牺牲性能 
    sql:
        使用 sql 语句查询数据：
            sql = 'select username,email,gender from user where id = 1'
        执行 sql 代码： 
            res = db.execSql(sql);
        取出数据： 
            name = res[0]
    orm:
        使用 orm 查询数据，定义 ORM 对象， get 值
            res = db.session.query(User.username,User.email,User.gender).filter(User.id == 1).first()
            name = res.username
       
ORM 的优点
    优势：
        隐藏了数据访问细节
        ORM 使我们构造固化数据结构变得非常简单 （表与表之间的关系）
    缺点：
        性能下降。添加了关联操作，性能不可避免的会下降一些
        无法解决特别复杂的数据库操作

"""
